package com.it.myreflect6;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class MyReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
        /*
        Class类中用于获取成员变量的方法
        Field[]getFields(): 返回所有公共成员变量对象的数组
        Field[]getDeclaredFields(): 返回所有成员变量对象的数组
        Field getField(String name): 返回单个公共成员变量对象
        Field getDeclaredField(String name): 返回单个成员变量对象
        Field类中用于创建对象的方法
        void set(Object obj, Object value): 赋值
        Object get(Object obj)获取值。
         */
        //先创建class对象
        Class clazz = Class.forName("com.it.myreflect6.Student");

        //获取成员变量
        Field[] name1 = clazz.getFields();
        for(Field f : name1) {
            System.out.println(f.getName());
        }

        System.out.println("----获取单个成员变量----");
        Field name2 = clazz.getDeclaredField("name");
        System.out.println(name2);

        System.out.println("----获取权限修饰符---");
        int modifiers = clazz.getModifiers();
        System.out.println(modifiers);

        System.out.println("---获取成员变量的名字---");
        String name = clazz.getName();
        System.out.println(name);

        System.out.println("---获取成员变量的类型---");
        String typeName = clazz.getTypeName();
        System.out.println(typeName);

        System.out.println("---获取成员变量记录的值---");
        Student s = new Student("张三",23);
        System.out.println(s);
    }
}
